package com.phoenix.jsef.jdbcutils;

import java.sql.Types;

/**
 * 通用数据库访问参数
 * @author 李启联
 *
 */
public class DBParameter {
	
	/**
	 * 参数名称（调用存储过程时：要与数据库中存储过程的参数名称对应； 执行SQL语句时与字段名称对应）
	 */
	protected String parameterName ;
	
	/**
	 *参数对应的值
	 */
	protected Object parameterValue;
	
	/**
	 * 数据库的输入输出参数的数据类型（默认为：NVARCHAR 字符型）
	 */
	protected int dbType = Types.NVARCHAR ;
	
	/**
	 * 标记数据库的输入输出参数（默认为：Input 输入参数）
	 */
	protected DBParameterDirection  parameterDirection = DBParameterDirection.Input;
	
	public String getParameterName() {
		return parameterName;
	}
	public void setParameterName(String parameterName) {
		this.parameterName = parameterName;
	}
	public Object getParameterValue() {
		return parameterValue;
	}
	public void setParameterValue(Object parameterValue) {
		this.parameterValue = parameterValue;
	}
	public int getDbType() {
		return dbType;
	}
	public void setDbType(int dbType) {
		this.dbType = dbType;
	}
	public DBParameterDirection getParameterDirection() {
		return parameterDirection;
	}
	public void setParameterDirection(DBParameterDirection parameterDirection) {
		this.parameterDirection = parameterDirection;
	}
	
	/**
	 * 新增一个数据库执行参数
	 * @param parameterName      :参数名称
	 * @param parameterValue     :参数对应的值
	 * @param dbType             :数据库的输入输出参数的数据类型 Types 的成员
	 * @param parameterDirection :标记数据库的输入输出参数 为DBParameterDirection 的成员
	 */
	public DBParameter(String parameterName, Object parameterValue, int dbType,
			DBParameterDirection parameterDirection) {
		this.parameterName = parameterName;
		this.parameterValue = parameterValue;
		this.dbType = dbType;
		this.parameterDirection = parameterDirection;
	}
	
	/**
	 * 新增一个数据库执行参数
	 * @param parameterName   :参数名称
	 * @param parameterValue  :参数对应的值
	 * @param dbType          :数据库的输入输出参数的数据类型 Types 的成员
	 */
	public DBParameter(String parameterName, Object parameterValue, int dbType) {
		this.parameterName = parameterName;
		this.parameterValue = parameterValue;
		this.dbType = dbType;
	}
	
	/**
	 * 新增一个数据库执行参数
	 * @param parameterName   :参数名称
	 * @param parameterValue  :参数对应的值
	 */
	public DBParameter(String parameterName, Object parameterValue) {
		this.parameterName = parameterName;
		this.parameterValue = parameterValue;
	}
	
	public DBParameter() {
	
	}
	@Override
	public String toString() {
		return "DBParameter [parameterName=" + parameterName + ", parameterValue=" + parameterValue + ", dbType="
				+ dbType + ", parameterDirection=" + parameterDirection + "]";
	}
	
	
}
